var News = require("../models").News;

// 查询新闻，按照发布日期降序排序
// 分页查询
// page 页码
// limit 页容量’
// keyWord:关键字 标题，内容，频道均可
// 返回 查询结果对象为 {total:总条数，data:新闻数组}

exports.getNews = async function(page, limit, keyWord) {
  var reg = new RegExp(keyWord); //使用正则表达式来查询关键字
  var filter = {
    $or: [{ title: reg }, { content: reg }, { channel: reg }]
  };
  var option = {
    sort: "-pubData",
    skip: (page - 1) * limit, //分页
    limit: limit
  };
  var datas = await News.find(filter, null, option);
  var total = await News.countDocuments(filter);
  return {
    total: total,
    datas: datas
  };
};

exports.deleteNews = async function(newsId) {
  try {
    // 使用 findByIdAndDelete 方法根据新闻 ID 查找并删除新闻
    const deletedNews = await News.findByIdAndDelete(newsId);

    // 检查是否成功删除了新闻
    if (!deletedNews) {
      // 如果没有找到要删除的新闻，则抛出一个错误
      throw new Error('新闻未找到');
    }

    // 如果删除成功，则返回删除的新闻记录（可选）
    // 注意：出于安全考虑，通常不建议返回完整的删除记录，特别是如果记录中包含敏感信息
    // 这里只是为了演示目的而返回
    return deletedNews;
  } catch (error) {
    // 捕获并处理任何错误
    console.error('删除新闻时出错:', error);
    // 可以选择将错误重新抛出，或者返回一个错误消息
    throw error; // 或者返回一个错误对象，例如：{ error: '删除新闻时出错', message: error.message }
  }
};
